#ifndef ASGKA_CREATER_H
#define ASGKA_CREATER_H

#include "asgka_common.h"
#include <map>
#include <string>
#include "singleMember.h"
#include "asgkaBase.h"

class asgkaCreater : public asgkaBase
{
public:
	asgkaCreater();
	asgkaCreater(singleGroup *group);
	~asgkaCreater();

	void generateMyOwnKeys();
	void computeMyPubKeysGroupO();

	void publicMyPubH() const;
	void publicMyPubKeysGroup() const;

	void computeMyDecryptKey();

private:
	void computeMyGroupKeyR();
	void computeMyGroupKeyA();

private:
	asgka_element m_my_priR;
	asgka_element m_my_priX;
	asgka_element m_my_priO;

	asgka_element m_my_pubH;
	asgka_element m_my_pubA;
	asgka_element m_my_pubR;

	std::map<std::string, asgka_element> m_my_pubO; 

	int m_my_priR_length;
};

#endif
